/*
 * @Author: 王鹏 2911783749@qq.com
 * @Date: 2022-10-21 14:24:43
 * @LastEditors: 王鹏 2911783749@qq.com
 * @LastEditTime: 2022-10-28 14:41:12
 * @FilePath: \v_shop\code\src\http\request.js
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 */
// 封装axios
import axios from 'axios';
// 引入环境地址
import env from './env';
import {Message,Loading} from "element-ui"
import router from '../router/index'

// 封装loading开启和结束函数
let loading;
function startLoading(){
    loading=Loading.service({
        lock:true,
        text:"拼命加载中...",
        background:"rgba(0,0,0,0.7)"
    })
}
function endLoding(){
    loading.close()
}
// 1.创建axios的实例
const service=axios.create({
    // 基地址
    baseURL:env.dev.baseUrl,
    setTimeout:50000,  //超时时长
})
// 2.请求拦截
service.interceptors.request.use(config=>{
    // 在发送请求之前做些什么，比如验证token之类的
    if(sessionStorage.token){
        config.headers.Authorization=sessionStorage.token
    }
    startLoading()
    return config
},error=>{
    // 对错误做些什么
    endLoding()
    return Promise.reject(error)
})
// 3.响应拦截
service.interceptors.response.use(response=>{
    endLoding()
    return response
},error=>{
    // 对请求错误做些什么
    const {status} = error.response
    if(status==401){
        Message.error('tokem已过期,请重新登录')
        sessionStorage.removeItem('token')
        router.push('/login')
    }
    endLoding()
    console.log(error);
    // Message.error(error.response.data.meta.msg)
    return Promise.reject(error)
})
// 4.抛出axios的对象实例
export default service